package cn.iocoder.yudao.module.erp.service.product;

import cn.iocoder.yudao.framework.common.enums.metal.MetalPricingMethodEnum;
import org.springframework.stereotype.Service;

import java.math.BigDecimal;

/**
 * 产品计价服务实现类
 * 
 * 这是一个用于演示如何替换计价方式枚举引用的示例
 */
@Service
public class ProductPricingService {
    
    /**
     * 获取计价方式名称
     * 
     * @param pricingMethod 计价方式
     * @return 计价方式名称
     */
    public String getPricingMethodName(Integer pricingMethod) {
        // 使用统一的MetalPricingMethodEnum
        return MetalPricingMethodEnum.getNameByType(pricingMethod);
    }
    
    /**
     * 计算产品价格
     * 
     * @param metalType 金属类型
     * @param pricingMethod 计价方式
     * @param weight 重量
     * @param basePrice 基础价格
     * @param goldPriceCoefficient 金价系数
     * @param internationalGoldPrice 国际金价
     * @return 计算后的价格
     */
    public BigDecimal calculatePrice(Integer metalType, Integer pricingMethod, 
                                   BigDecimal weight, BigDecimal basePrice,
                                   BigDecimal goldPriceCoefficient, BigDecimal internationalGoldPrice) {
        MetalPricingMethodEnum method = MetalPricingMethodEnum.valueOf(pricingMethod);
        
        if (method == MetalPricingMethodEnum.FIXED_PRICE) {
            // 固定价格，直接返回基础价格
            return basePrice;
//        } else if (method == MetalPricingMethodEnum.WEIGHT_BASED) {
//            // 按重量计价，基础价格 * 重量
//            return basePrice.multiply(weight);
//        } else if (method == MetalPricingMethodEnum.MARKET_LINKED) {
//            // 与国际金价挂钩，基础价格 + (国际金价 * 系数 * 重量)
//            return basePrice.add(internationalGoldPrice.multiply(goldPriceCoefficient).multiply(weight));
        }
        
        return BigDecimal.ZERO;
    }
} 